#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QPushButton* button = new QPushButton(this);
    button->setText("按钮");
    button->move(200,200);
    connect(button,&QPushButton::clicked,this,[=](){
        qDebug()<<"lambda 被执行了!!!";
        //button->move(300,300);
        // lambda 本质是一个回调函数！获取不到外面层的button变量！
        // lambda 表达式为了解决上述问题，引入了变量捕获的语法，通过变量获取，获取到外层作用域中的变量"【】"
        button->move(300,300);
        this->move(0,0);
        //写作：[=]: 就是将上层作用域中的所有的变量名都给捕获进来！

        //后续如果我们对应的槽函数比较简单，而且是一次性使用的，就经常会写作这种 lambda 的形式！
        //还可以按照引用的方式来捕获" [&] ",（Qt中很少这么使用）捕获到的变量一般都是各种控件的指针，指针变量按照值传递或者引用传递都无所谓。
        //但是按照引用的方式的话，还需要更加关注这个引用的变量本身的生命周期！
    });
}

Widget::~Widget()
{
    delete ui;
}

// 定义槽函数的时候，也是可以使用lambda表达式的！
